<template>
  <div class="container">
    <el-form ref="search" :inline="true" :model="formInline" :rules="rules" class="search" label-width="100px" size="small">
      <el-form-item label="用户名:">
        <el-input v-model="formInline.username" placeholder="请输入用户名" clearable />
      </el-form-item>
      <el-form-item label="手机号:">
        <el-input v-model="formInline.phone" placeholder="请输入手机号" clearable />
      </el-form-item>
      <el-form-item label="房间号:">
        <tree-select ref="treeSelect" :data="officeTreeList" :el="'formInline.deptId'" placeholder="请选择" :default-props="defaultProps" :default-expand-all="false" multiple clearable :clear="clearTreeSelect" :node-key="nodeKey" :checked-keys="defaultCheckedKeys" @parent-event="popoverHide" @popoverHide="popoverHide" />
      </el-form-item>
      <el-form-item label="开始时间:" prop="startTime">
        <el-date-picker v-model="formInline.startTime" :picker-options="startTime" type="datetime" placeholder="请选择开始时间" />
      </el-form-item>
      <el-form-item label="结束时间:" prop="endTime">
        <el-date-picker v-model="formInline.endTime" :picker-options="endTime" type="datetime" placeholder="请选择结束时间" />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" size="mini" @click="handleSearch">查询</el-button>
        <el-button type="info" size="mini" @click="handleReset">重置</el-button>
      </el-form-item>
    </el-form>
    <div class="table-wrap">
      <div class="f-betweenX table-header">
        <div class="table-title">
          <svg-icon icon-class="table_menu" class-name="icon-table" />
          查询结果 共找到 <span class="count">{{ total }}</span> 条符合的记录
        </div>
        <div class="table-control">
          <el-button type="primary" size="mini" plain>
            导入
          </el-button>
          <el-button type="primary" size="mini" plain>
            导出
          </el-button>
          <!-- <el-button
            type="primary"
            size="mini"
            icon="el-icon-plus"
            plain
            @click="handleAdd">
            新增
          </el-button> -->
        </div>
      </div>
      <!-- 表格 -->
      <tables :max-table-height="maxTableHeight" :table-data="tableData" />
    </div>
    <!-- 分页 -->
    <pagination :current="pageData.current" :size="pageData.size" :total="total" @changeSize="changeSize" @changeCurrent="changeCurrent" />
    <!-- 新增 -->
    <add ref="add" @refresh="refresh" />
  </div>
</template>

<script>
import Tables from './Tables'
import Pagination from '@/components/Pagination'
import tableHeight from '@/mixins/tableHeight'
import pagination from '@/mixins/pagination'
import Add from './Add'
import TreeSelect from '@/components/TreeSelect'
import { getPersonnel } from '@/api/personnel'

export default {
  components: {
    Tables,
    Pagination,
    Add,
    TreeSelect
  },
  mixins: [tableHeight, pagination],
  data() {
    return {
      loding: false,
      total: 0,
      pageData: {
        current: 1,
        size: 10
      },
      formInline: {
        username: '',
        phone: '',
        deptId: [],
        startTime: '',
        endTime: ''
      },

      defaultProps: {
        parent: 'parentId', // 父级唯一标识
        value: 'id', // 唯一标识
        label: 'label', // 标签显示
        children: 'children' // 子级
      },
      isShowSelect: false, // 选择面板，默认隐藏
      officeTreeList: this.$config.treeList, // 树形结构数据
      selectedOfficeIds: '', // 选择后返回的选中id，以逗号拼接
      selectedOffices: [], // 选择后返回的选中对象，
      clearTreeSelect: 0,
      nodeKey: 'id', // 树形结构数据中对应的属性名称，可改为自己数据中属性
      defaultCheckedKeys: [], // 默认初次选中的数据

      tableData: [{}],

      // 开始时间
      startTime: {
        disabledDate: time => {
          if (this.formInline.endTime) {
            return (
              time.getTime() > new Date(this.formInline.endTime).getTime()
            )
          } else {
            return time.getTime() > Date.now()
          }
        }
      },
      // 结束时间
      endTime: {
        disabledDate: time => {
          if (this.formInline.startTime) {
            return (
              time.getTime() > Date.now() ||
              time.getTime() < new Date(this.formInline.startTime).getTime()
            )
          } else {
            return time.getTime() > Date.now()
          }
        }
      }
    }
  },
  computed: {
    rules() {
      return {
        // startTime: [
        //   { required: true, message: "请选择开始时间", trigger: ["blur"] }
        // ],
        // endTime: [
        //   { required: true, message: "请选择结束时间", trigger: ["blur"] }
        // ]
      }
    }
  },
  mounted() {
    this.handleSearch()
  },
  methods: {
    // 查询
    handleSearch() {
      this.pageData.current = 1
      this.getList()
    },
    // 重置
    handleReset() {
      this.formInline = {}
    },
    // 刷新
    refresh() {
      this.handleSearch()
    },
    // 获取列表
    getList() {
      const data = { ...this.pageData, ...this.formInline }
      console.log(1, data)
      getPersonnel(data)
        .then(res => {
          if (res.code === 0) {
            this.total = res.data.total
            this.tableData = res.data.records
          } else {
            this.$message.error(res.msg)
          }
        })
        .catch(err => {
          console.log(res)
        })
    },
    // 获取部门名称
    popoverHide(checkedIds, checkedData, el) {
      console.log(checkedIds, checkedData)
      if (el) {
        eval(' ( this.' + el + ' = checkedIds) ')
        console.log(1, this.formInline.deptId)
      }
    },
    onSubmit() {
      console.log('submit!')
    },
    // 新增
    handleAdd() {
      this.$refs.add.togglePopup(true)
    }

  }
}
</script>

<style lang="scss" scoped>
.container {
  padding: 0 17px;
  .search {
    padding-top: 16px;
  }
  .table-wrap {
    .icon-table {
      margin: 0 10px;
    }
    .table-header {
      height: 52px;
      background: #f6f7f9;
      border: 1px solid #e1e7e9;
      border-bottom: none;
      font-size: 16px;
      color: #494949;
      line-height: 52px;
      border-radius: 4px 4px 0 0;
      .count {
        color: rgb(235, 104, 84);
      }
      .table-control {
        margin-right: 10px;
      }
    }
  }
  .pagination-wrap {
    height: 80px;
    .pagination {
      display: inline-block;
    }
  }
}
</style>

<style lang="scss">
.tree-line {
  .el-tree-node {
    position: relative;
    padding-left: 16px; // 缩进量
  }
  .el-tree-node__children {
    padding-left: 16px; // 缩进量
  }

  // 竖线
  .el-tree-node::before {
    content: '';
    height: 100%;
    width: 1px;
    position: absolute;
    left: -3px;
    top: -26px;
    border-width: 1px;
    border-left: 1px dashed #52627c;
  }
  // 当前层最后一个节点的竖线高度固定
  .el-tree-node:last-child::before {
    height: 38px; // 可以自己调节到合适数值
  }

  // 横线
  .el-tree-node::after {
    content: '';
    width: 24px;
    height: 20px;
    position: absolute;
    left: -3px;
    top: 12px;
    border-width: 1px;
    border-top: 1px dashed #52627c;
  }

  // 去掉最顶层的虚线，放最下面样式才不会被上面的覆盖了
  & > .el-tree-node::after {
    border-top: none;
  }
  & > .el-tree-node::before {
    border-left: none;
  }

  // 展开关闭的icon
  .el-tree-node__expand-icon {
    font-size: 16px;
    // 叶子节点（无子节点）
    &.is-leaf {
      color: transparent;
      // display: none; // 也可以去掉
    }
  }
}
</style>
